package com.itc.bi.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itc.bi.bo.DataSetColumnBO;
import com.itc.bi.dto.DataProcessDto;
import com.itc.bi.dto.DataProcessInitDto;
import com.itc.bi.dto.DataProcessListDto;
import com.itc.bi.dto.PolymericDto;
import com.itc.bi.entity.DataProcessEntity;
import com.itc.bi.entity.DataSetColumnEntity;
import com.itc.bi.vo.ApiConfigVO;
import com.itc.bi.vo.DataProcessVO;
import com.itc.bi.vo.Direcr.DircetDataInfoVO;
import com.itc.bi.vo.Direcr.PreviewDatVO;
import com.itc.bi.vo.ProcessDataVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author hecai
* @description 针对表【tb_data_process(数据集加工描述)】的数据库操作Service
* @createDate 2024-06-27 18:33:47
*/
public interface DataProcessService extends IService<DataProcessEntity> {

    /**
     * 获取指标数据项
     * @param dtId
     * @return
     */
    List<DataSetColumnBO> getDataSetColumnByAggregate(Long dtId);

    /**
     * 修改分页大小
     * @param dpId
     * @param pageSize
     * @return
     */
    Boolean updatePageSize(Long dpId,Integer pageSize);

    /**
     *  获取接口配置
     * @param dpId
     * @return
     */
    ApiConfigVO getApiConfig(Long dpId);

    /**
     * 加工数据集数据预览
     * @param dtId
     * @param pageIndex
     * @param pageSize
     * @return
     */
    PreviewDatVO dataPreviewByDtId(Long dtId, Integer pageIndex, Integer pageSize);

    /**
     * 分页获取数据加工
     * @param dtId
     * @param pageIndex
     * @param pageSize
     * @return
     */
    IPage<DataProcessVO> getPageData(Long dtId, Integer pageIndex, Integer pageSize);

    /**
     * 移除数据加工
     * @param id
     * @return
     */
    Boolean removeById(Long id);

    /**
     * 新增加工主表信息
     * @param dataProcessDto
     * @return
     */
    Boolean saveDataProcess(DataProcessDto dataProcessDto);

    /**
     * 获取数据加工id
     * @param dtId
     * @return
     */
    Long getDataProcessId(Long dtId);

    /**
     * 根据数据集ID获取数据加工ID
     * @param dtId
     * @return
     */
    DataProcessInitDto getId(Long dtId);


    DataProcessDto get(Long dpId);

    void saveProcess(DataProcessDto dataProcessDto);

    /**
     * 取消
     * @param id
     */
    void cancel(Long id);

    /**
     * 聚合指标
     * @param dto
     */
    void savePolymeric(PolymericDto dto);

    DataProcessListDto listByDataSetId(Long dtId);

    void modifyName(DataProcessEntity entity);

    /**
     * 聚合指标详情
     * @param id
     */
    PolymericDto polymericInfoById(Long id);

    /**
     * 获取数据集加工数据
     * @param dtId
     * @return
     */
    List<ProcessDataVO> getProcessDataList(Long dtId);
}
